package midalgorithms.math;

import java.util.HashSet;
import java.util.Set;

public class _01HappyNum {
    public static boolean isHappy(int n) {
        Set<Integer> set = new HashSet<>();
        return happyHelp(n,set);
    }

    private static boolean happyHelp(int n, Set<Integer> set) {
        //  退出递归的条件很重要，即使数据超出了整型数据的范围，也能退出递归
        if (set.contains(n)){
            return false;
        }
        if (n == 1){
            return true;
        }
        set.add(n);
        String s = String.valueOf(n);
        int res = 0;
        //  转换s
        for (int i = 0;i < s.length();i++){
            res += Math.pow(s.charAt(i)-'0',2);
        }
        return happyHelp(res,set);
    }
}
